package com.wj.controller;

import com.hospital.common.base.Result;
import com.hospital.common.pojo.AuditResult;
import com.wj.service.ImageAuditService;
import com.wj.service.MinioService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;


@RestController
@RequestMapping("/minio")
public class MinioController {


    @Autowired
    private MinioService minioService;
    @Autowired
    private ImageAuditService imageAuditService;

    /**
     * 上传文件
     * @param file
     * @return
     */
    @PostMapping("/uploadFile")
    public Result<String> addGoods(@RequestParam("file") MultipartFile file
    )  {
        try {
            // 1. 先进行图片审核
            Integer auditResult = imageAuditService.auditByMultipartFile(file);

            // 2. 检查审核结果
            if (AuditResult.isCompliant(auditResult)) {
                // 3. 审核通过，继续处理文件（保存到服务器等）
                return  Result.success("文件上传成功" ,saveFile(file));
            } else if (auditResult == AuditResult.NON_COMPLIANT) {
                return Result.fail("文件包含不合规内容，请重新上传");
            } else {
                // 4. 处理其他错误
                String errorMsg = "文件上传失败: " + AuditResult.getDescription(auditResult);
                return Result.fail(errorMsg);
            }

        } catch (Exception e) {
            return Result.fail("文件处理失败: " + e.getMessage());
        }

//        return Result.success(minioService.uploadFile(file));
    }
    // 保存文件到服务器
    private String saveFile(MultipartFile file) throws IOException {
        // 实现您的文件保存逻辑
        // 例如：生成唯一文件名，保存到指定目录等
        String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
        String filePath = "/uploads/" + fileName;

        // 实际保存代码
        // Files.write(Paths.get(filePath), file.getBytes());

        return minioService.uploadFile(file);
    }
    /**
     * 批量删除文件 json的集合
     * @param fileNames
     * @return
     */
    @DeleteMapping("/deleteFiles")
    public Result deleteFiles(@RequestParam("fileNames") String fileNames){
        return Result.success(minioService.deleteFiles(fileNames));
    }
    /**
     * 获取文件访问URL
     * @param fileName
     * @return
     */
    @GetMapping("/getFileUrl")
    public Result getFileUrl(@RequestParam("fileName") String fileName){
        return Result.success("成功",minioService.getFileUrl(fileName));
    }
    /**
     * 批量获取文件访问URL
     * @param fileNames
     * @return
     */
    @GetMapping("/getFileUrls")
    public Result getFileUrls(@RequestParam("fileNames") String fileNames){
        return Result.success(minioService.getFileUrls(fileNames));
    }
    /**
     * 删除文件
     * @param fileName
     * @return
     */
    @DeleteMapping("/deleteFile")
    public Result deleteFile(@RequestParam("fileName") String fileName){
        return Result.success(minioService.deleteFile(fileName));
    }
}
